package besteAukera;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;

public class Dekodegailu extends Konbinazionalak {
	private Color kolorea;
	private Vector<Hanka> hankaBektorea=new Vector<Hanka>();
	private Vector<Hanka> sarreraBektorea=new Vector<Hanka>();
	private Hanka s1, s2,i3,i4, i1,i2,s3;
	public Dekodegailu(int x1, int y1, int hankaKop, int sarreraKopMax,int IrteeraKop, String mota) {
		super(x1, y1, hankaKop, sarreraKopMax, mota);
		// TODO Auto-generated constructor stub
		s1 = new Hanka(x-20, y+20, "positiboa", "s", 0, this, "h","ez");
		s2 = new Hanka(x-20 , y+40 , "positiboa", "s", 1, this, "h","ez");
		i1 = new Hanka(x+60 , y , "positiboa", "i", 2, this, "h","ez");
		i2 = new Hanka(x+60 , y+20 , "positiboa", "i", 3, this, "h","ez");
		i3 = new Hanka(x+60 , y+40 , "positiboa", "i", 4, this, "h","ez");
		i4 = new Hanka(x+60 , y+60 , "positiboa", "i", 5, this, "h","ez");
		s3 = new Hanka(x+20 , y -20, "negatiboa", "s", 6, this, "b","ez");
		lotList[0]=s1;
		lotList[1]=s2;
		lotList[2]=i1;
		lotList[3]=i2;
		lotList[4]=i3;
		lotList[5]=i4;
		lotList[6]=s3;
	}
	public void dibujate(Graphics g) {

		g.setColor(Color.black);
		//goikoa
		g.drawLine(x, y+10,x+40, y-10);
		//beikoa
		g.drawLine(x, y + 50,x+40, y + 70);
		//ezkerretakoa
		g.drawLine(x, y+10, x, y + 50);
		//eskubitakoa
		g.drawLine(x+40, y-10, x+40, y + 70);
			s1.dibujate(g);
			s2.dibujate(g);
			i1.dibujate(g);
			i2.dibujate(g);
			i3.dibujate(g);
			i4.dibujate(g);
			s3.dibujate(g);
	}
	public boolean estaDentro(int x, int y) {
		if ((x > this.x) && (x < (this.x + 40)) && (y > this.y)
				&& (y < (this.y + 70))) {
			return true;
		}
		return false;

	}
	public void setPosicion(int x1, int y1) {
		this.x = x1;
		this.y = y1;
	}

	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
	@Override
	public void funtzioLogikoa(Integer... values) {
		
		// TODO Auto-generated method stub
		lotList[2].getIrteera().setBalioa(s3.getSarrera().getBalioa() & not(s1.getSarrera().getBalioa())& not(s2.getSarrera().getBalioa()));
		lotList[3].getIrteera().setBalioa(s3.getSarrera().getBalioa() & not(s1.getSarrera().getBalioa())& s2.getSarrera().getBalioa());
		lotList[4].getIrteera().setBalioa(s3.getSarrera().getBalioa() & s1.getSarrera().getBalioa()& not(s2.getSarrera().getBalioa()));
		lotList[5].getIrteera().setBalioa(s3.getSarrera().getBalioa() & s1.getSarrera().getBalioa()& s2.getSarrera().getBalioa());
	}
	@Override
	public Vector<Hanka> getHankak() {
		// TODO Auto-generated method stub
		hankaBektorea = new Vector<Hanka>();
		hankaBektorea.addElement(s1);
		hankaBektorea.addElement(s2);
		hankaBektorea.addElement(s3);
		hankaBektorea.addElement(i1);
		hankaBektorea.addElement(i2);
		hankaBektorea.addElement(i3);
		hankaBektorea.addElement(i4);
		return hankaBektorea;
	}

	@Override
	public Hanka getIrteeraHanka() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Vector<Hanka> getSarreraHankak() {
		// TODO Auto-generated method stub
		sarreraBektorea=new Vector<Hanka>();
		sarreraBektorea.addElement(s1);
		sarreraBektorea.addElement(s2);
		sarreraBektorea.addElement(s3);
		return sarreraBektorea;
	}
public Integer not(Integer sar){
	if (sar==0)
		return 1;
	else return 0;
}

//public synchronized void abixatu() {
//	int i = 0;
//	// Nota:Probatu abixatu eta exekutatu And-ean egiten, horrela txip
//	// bakoitza
//	// berea izango du eta chip-ean hankak sortzen direnez ez da problemarik
//	// egon behar
//	while (lotList.length > i) {
//		int j = 0;
//
//		if (lotList[i] != null)
//			if (lotList[i].getHankaMota() != "s")
//
//				while (lotList[i].getLotLista().size() > j) {
//
//					// irteera truen jarri
//					Chip unekoChip = this.lotList[i].getLotLista().get(j)
//							.getChipa();
//					// abixatu behar den txipa unekochipean gorde
//					int unekoHanka = lotList[i].getLotLista().get(j)
//							.getHankaZenb();
//					if ((unekoChip.getLoturenLista()[unekoHanka]
//							.getloturaDu() == true))
//						//if (balioZuzenak.length==3)
//						unekoChip.lotList[unekoHanka]
//								.getSarrera()
//								.setBalioa(
//										lotList[i].getIrteera().getBalioa());
////						else
////							unekoChip.lotList[unekoHanka]
////												.getSarrera()
////												.setBalioa(
////														lotList[1].getIrteera().getBalioa());
//					unekoChip.aktibatu(unekoHanka);
//					// Hau aldatu beharko da, bakarrik ate logikoentzako
//					// balio baitu
//					j++;
//				}
//		i++;
//
//	}
//	notifyAll();
//}

}
